草庐IT

Java OutOfMemoryError 奇怪的行为

全部标签

c++ - 正在阅读一个不是最近用 GCC 编写的未定义行为的成员吗?

C++reference有以下用于union的explanation,这个问题的有趣部分以粗体显示:Theunionisonlyasbigasnecessarytoholditslargestdatamember.Theotherdatamembersareallocatedinthesamebytesaspartofthatlargestmember.Thedetailsofthatallocationareimplementation-defined,andit'sundefinedbehaviortoreadfromthememberoftheunionthatwasn'tmos

c++ - OpenGL 计算着色器 - 奇怪的结果

我正在尝试为图像处理实现多channel计算着色器。每遍都有一个输入图像和一个输出图像。下一个pass的输入图像是前一个pass的输出。这是我第一次在OpenGL中使用计算着色器,所以我的设置可能存在一些问题。我使用OpenCV的Mat作为读取/复制操作的容器。代码中有一些与问题无关的部分,所以我没有包括在内。其中一些部分包括加载图像或初始化上下文。初始化://textureinitglGenTextures(1,&feedbackTexture_);glActiveTexture(GL_TEXTURE0);glBindTexture(GL_TEXTURE_2D,feedbackTex

c++ - gcc 预编译 header 的奇怪行为

我在让预编译的头文件工作时遇到了麻烦,所以我想到了以下最小工作示例。这是头文件foo.h#includeusingnamespacestd;voidhello(){cout我将它编译为g++-cfoo.h给我一个编译后的头文件foo.gch。我希望当我编译以下包含foo.h的源文件时,它应该选择headerfoo.h.gch并且我很好。//test.cpp#include//Swaporderinglater#include"foo.h"//------------------intmain(){hello();}但令人惊讶的是,这并没有使用foo.h.gch进行编译,而是使用了foo

c++ - vector 修改后引用 vector.back() 的奇怪行为

让我们从这个C++示例代码开始:#include#includeintmain(){std::vectorvec;vec.push_back(0);for(inti=1;i代码是用g++test.cc-std=c++11-O0编译的,下面是结果:Before:0,After:0Before:1,After:0Before:2,After:2Before:3,After:3我期待第二行输出是Before:1,After:1因为x是vector中一个项目的引用,不应通过将项目附加到vector来修改它。但是我目前还没有阅读反汇编代码或进行任何其他调查。我也不知道这是否是语言标准中未定义的行

c++ - C/C++ 中的链式赋值是未定义的行为吗?

忽略变量的类型,像a=b=c这样的表达式是否在C和C++中都有定义的行为?如果是这样,谁能给我官方证据,比如标准中的引述,好吗?附言我搜索了链接赋值,但我得到的一切都是关联性,但我没有在C99标准中找到任何关于它的文本。也许我做错了?希望有人能帮助我。 最佳答案 来自C++标准5.17Assignmentandcompoundassignmentoperators[expr.ass]1Theassignmentoperator(=)andthecompoundassignmentoperatorsallgroupright-to-l

c++ - 如何在 C++ 中强制使用奇怪的重复模板模式

我有以下基本模板类。templateclassBase{public:voiddo_something(){}};它旨在用作奇怪地重复出现的模板模式。它应该像classB:publicBase一样被继承.它必须不像classB:publicBase一样被继承.我想静态地执行这个要求。如果有人使用错误,我预计会在编译阶段出现错误。我正在做的是放置一个static_cast(*this)在do_something().这样,继承模板的类就是或继承自作为模板参数提供的类。对不起,令人困惑的表达。用简单的英语来说,它需要B是或继承自SomeoneElse在classB:publicBase.我

c++ - uint8 显示奇怪的字符

我已经声明了一个uint8变量,当打印其中的值时,我得到了笑脸和空格。它不应该显示整数值吗? 最佳答案 我打赌uint8是typedef对于unsignedchar在您的系统标题中。然后std::cout将打印符号而不是整数值,其中u类型为uint8.尝试std::cout(u);或std::cout打印数值。 关于c++-uint8显示奇怪的字符,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/qu

c++ - 微型 C++ 结构的行为

如果我定义一个结构如下:structtiny{longt;};在函数参数等方面,它会像long一样处理吗,例如,参数为:voidmyfunc(tinyx){...}像long参数一样被压入堆栈?从本质上讲,tiny结构是否仅与其唯一成员一样大?谢谢 最佳答案 结构体的内存消耗至少是组成变量内存大小的总和。但是,编译器可能会在变量之间或结构末尾添加填充,以确保给定计算机体系结构的正确数据对齐 关于c++-微型C++结构的行为,我们在StackOverflow上找到一个类似的问题:

c++ - operator const char* 以奇怪的方式覆盖(?)我的另一个变量

#include#includeclassVector{double_x;double_y;public:Vector(doublex,doubley):_x(x),_y(y){}doublegetX(){return_x;}doublegetY(){return_y;}operatorconstchar*(){std::ostringstreamos;os这个程序的输出:$./a.outVectorw1(1.1,2.2)Vectorw2(3.3,4.4)Vector(3.3,4.4)Vector(3.3,4.4)我不明白为什么会得到输出。似乎是“constchar*n2=w2;”覆盖

c++ - 为什么专门化 type_trait 会导致未定义的行为?

讨论根据标准§20.10.2/1Header概要[meta.type.synop]:1Thebehaviorofaprogramthataddsspecializationsforanyoftheclasstemplatesdefinedinthissubclauseisundefinedunlessotherwisespecified.这个特定的子句与STL应该是可扩展的一般概念相矛盾,并阻止我们扩展类型特征,如下例所示:namespacestd{templatestructis_floating_point>:std::integral_constant::type>::value